package com.example.demo.service;

import com.example.demo.entity.ResourceFile;
import org.springframework.web.multipart.MultipartFile;

/**
 * 资源服务层接口
 *
 * @author 叮当猫的百宝箱
 * @since 1.0
 */
public interface ResourceFileService {

    /**
     * 添加资源文件
     *
     * @param resource 待添加的资源信息
     */
    void create(ResourceFile resource);

    /**
     * 根据资源ID获取资源详情
     *
     * @param id 资源ID
     * @return 资源详情信息
     */
    ResourceFile getResourceById(Long id);

    /**
     * 清除上传后长期未使用的资源(每天00:30自动执行)
     */
    void clear();


    /**
     * 根据资源ID将资源信息标记为已删除(仅标记不删除文件)
     *
     * @param id 资源ID
     */
    void markAsDeletedById(Long id);

    /**
     * 根据资源ID删除资源信息(同时删除文件)
     *
     * @param id 资源ID
     */
    void deleteById(Long id);

    /**
     * 删除资源信息(同时删除文件)
     *
     * @param resource 待删除资源信息
     */
    void delete(ResourceFile resource);


    /**
     * 将资源信息标记为已使用
     *
     * @param id 资源ID
     */
    void markAsUsedById(Long id);


    /**
     * 将资源信息标记为未使用
     *
     * @param id 资源ID
     */
    void markAsNotUsedById(Long id);

    /**
     * 上传图片
     *
     * @param file 待上传的图片文件
     * @return 文件在服务器中的资源信息
     */
    ResourceFile uploadImage(MultipartFile file);

}
